﻿function GradoBachiller() {

    this.Clie_ID = null;
    this.CodigoConvocatoria = null;

    //Para verificar el estado de la ficha
    this.VerificarEstadoFicha = function () {
        return true;
    };

    this.PreInit = function () {
        var _parent = this;
    }

    //Despues de cargar el formulario
    this._PostForm = function () {
        var _parent = this;
        _parent.ValidacionCamposForm();
        _parent._CargarEventosForm();
    }

    this.ValidacionCamposForm = function () {

        var _parent = this;
        
        _parent._getForm().find("#Clie_GradoBachiller").addClass("limpiar-inputfile");
        _parent._getForm().find("#Clie_AnhoEgreso").addClass("input-small");
    }
    /**
    Carga de eventos
    */
    this._CargarEventosForm = function () {

        var _parent = this;

        _parent.StyleInputFile(_parent._getForm().find("#Clie_GradoBachiller"));

        _parent._ValidacionExtensionArchivo(
            _parent._getForm().find("#Clie_GradoBachiller")
            , ["jpeg", "png", "jpg", "doc", "docx", "pdf"]
            , "Formato de archivo incorrecto para el grado de bachiller"
            , "Los formatos permitidos son jpg, png, doc, docx y pdf"
            );

        _parent._getForm().validationEngine({
            ajaxSubmit: true,
            onValidationComplete: function (form, status) {

                if (status) {
                    _parent._getForm().ajaxSubmit({
                        success: function (responseText, statusText, xhr, $form) {

                            _parent._MensajesOperacion("success", "Registro grabado", "El archivo de grado de bachiller fue subido correctamente");
                            _parent.Form(
                                { Clie_ID: _parent.Clie_ID,
                                    CodigoConvocatoria: _parent.CodigoConvocatoria
                                }
                            );

                            _parent.VerificarEstadoFicha();
                        }
                    });
                }
            }
        });
    }
}

function InformacionAcademica() {

    this.Clie_ID = null;
    this.CodigoConvocatoria = null;

    //Para verificar el estado de la ficha
    this.VerificarEstadoFicha = function () {
        return true;
    };

    //Funcion que sirve para ir a la siguiente ficha
    this.FichaSiguiente = function () {
        return true;
    }

    //Funcion que sirve para ir a la anterior
    this.FichaAnterior = function () {
        return true;
    }

    this.PreInit = function () {
        var _parent = this;

        _parent.TituloModalForm = "Información académica";
        _parent.CssModalForm = {
            'top': "40%",
            'width': '800px',
            'margin-left': function () {
                return -($(this).width() / 2);
            }
        }


        //Accion para la siguiente ficha
        var cont = _parent._getCont();
        cont.find("#Regresar").click(function () {
            _parent.FichaAnterior();
        });
        cont.find("#Continuar").click(function () {
            _parent.FichaSiguiente();
        });

        _parent._Editar();
        _parent._Eliminar();

        _parent._getCont().find("#nuevo").click(function () {
            _parent.Form({
                Clie_ID: _parent.Clie_ID,
                CodigoConvocatoria: _parent.CodigoConvocatoria
            });
        })
    }

    /**
    Eliminar el registro
    */
    this._Eliminar = function () {

        var _parent = this;

        _parent._getContList().off('click', '.eliminar');
        _parent._getContList().on('click', '.eliminar', function (e) {
            e.preventDefault();
            var obj = $(this);

            var confirmacion = _parent._MensajeConfirmacion();

            confirmacion.yes = function () {
                jQuery.post(URL_PAGE + "Postulante/FichaPostgrado/EliminarFormacionAcademica",
                                         {
                                             Clie_ID: _parent.Clie_ID,
                                             OEst_ID: obj.attr('data-id-otroestudio')
                                         },
                             function (data) {

                                 confirmacion.getModal.modal('hide');
                                 _parent._MensajesOperacion("success",
                                                    "Registro eliminado",
                                                    "La información academica fue eliminada correctamente");
                                 _parent.List(
                                    {
                                        Clie_ID: _parent.Clie_ID,
                                        CodigoConvocatoria: _parent.CodigoConvocatoria
                                    });

                                 _parent.VerificarEstadoFicha();
                             }
                   , "json");
            };

            confirmacion.modal();

        });
    };

    /**
    Editar el registro
    */
    this._Editar = function () {

        var _parent = this;

        _parent._getContList().off('click', '.editar');
        _parent._getContList().on('click', '.editar', function (e) {
            e.preventDefault();
            var obj = $(this);


            _parent.Form(
                {
                    Clie_ID: _parent.Clie_ID,
                    OEst_ID: obj.attr('data-id-otroestudio'),
                    CodigoConvocatoria: _parent.CodigoConvocatoria
                }
            )


        });
    };

    //Despues de cargar el formulario
    this._PostForm = function () {

        var _parent = this;
        _parent._InicializarVisualizacionControles();
        _parent.ValidacionCamposForm();
        _parent._CargarEventosForm();
    }

    this.ValidacionCamposForm = function () {
        var _parent = this;

        var form = _parent._getForm();     
    }


    /**
    Inicializacion de visualizacion de controles del formulario
    */
    this._InicializarVisualizacionControles = function () {
        var _parent = this;
        var form = _parent._getForm();

        var stateOFI = form.find("#OEst_FecInicioRequired").val();
        var stateOFF = form.find("#Oest_FecFinRequired").val();
        var stateOFT = form.find("#OEst_FechaTerminoRequired").val();

        if (stateOFI != null) {
            _parent.ConvertFechaCombos(form.find("#OEst_FecInicio"), "dd/mm/AAAA", "mm/AAAA", stateOFI.toLowerCase() == 'true');
        }

        if (stateOFF != null) {
            _parent.ConvertFechaCombos(form.find("#Oest_FecFin"), "dd/mm/AAAA", "mm/AAAA", stateOFF.toLowerCase() == 'true');
        }

        if (stateOFT != null) {
            _parent.ConvertFechaCombos(form.find("#OEst_FechaTermino"), "dd/mm/AAAA", "mm/AAAA", stateOFT.toLowerCase() == 'true');
        }

        form.find("#otro_tipo_institucion").hide();
        form.find("#otra_institucion").hide();
        form.find("#Layer_OtrosEspecialidad").hide();
        form.find("#Layer_OtrosGradoAcademico").hide();

        //Cuando el tipo de institucion es otro
        //Se activan tres campos
        if (form.find("#Tins_Codigo").val() == "TINS0009") {
            form.find("#otro_tipo_institucion").show();
            form.find("#Layer_Institucion").hide();
        }

        //Cuando se esta editando y realizando las acciones cuando la institucion sean otros
        if (form.find("#Inst_Codigo").val() == "INST0019") {
            form.find("#otra_institucion").show();

            //Universidades extranjeras
            if (form.find("#Tins_Codigo").val() == "TINS0008") {
                form.find("#Layer_Pais_Codigo_TipoInstFijo").show();
            } else {
                form.find("#Layer_Pais_Codigo_TipoInstFijo").hide();
            }
        }

        if (form.find("#GrAc_Codigo").val() == "GRAC9999") {
            form.find("#Layer_OtrosGradoAcademico").show();
        }

        if (form.find("#Prof_Codigo").val() == "PROF9999") {
            form.find("#Layer_OtrosEspecialidad").show();
        }

        form.find("#Inst_Codigo").addClass("span10");
        form.find("#Tins_Codigo").addClass("span10");
        form.find("#OEst_OtroNombreInstitucion_TipoInstFijo").addClass("span10");
        form.find("#Anho_Grado").addClass("span10");
        form.find("#Prof_Codigo").addClass("span10");   
    };

    /**
    Carga de eventos
    */
    this._CargarEventosForm = function () {

        var _parent = this;


        _parent._getContForm().find("#aceptar").click(function () {
            $(this).attr("disabled", "disabled");
            _parent._getForm().submit();
        })

        _parent._getForm().validationEngine({
            promptPosition: "topLeft",
            ajaxSubmit: true,
            onValidationComplete: function (form, status) {
                if (status) {
                    var stateOFF = form.find("#Oest_FecFinRequired").val();

                    if (stateOFF != null && stateOFF.toLowerCase() != 'false') {
                        var FFI = _parent._getForm().find("#OEst_FecInicio");
                        var FFF = _parent._getForm().find("#Oest_FecFin");

                        if (FFI.val() != null && FFF.val() != null) {
                            var rangoValido = _parent.ValidarFechaRango(FFI, FFF, "dd/mm/AAAA");

                            if (!rangoValido) {
                                _parent._getForm().find("#Oest_FecFin_anio").validationEngine('showPrompt', 'La fecha de fin es menor que la fecha de inicio', 'error', true);
                                _parent._getContForm().find("#aceptar").removeAttr("disabled");
                                return false;
                            }
                        }
                    }

                    _parent._getForm().ajaxSubmit({
                        success: function (responseText, statusText, xhr, $form) {

                            _parent._MensajesOperacion("success", "Registro grabado", "La información academica fue registrada correctamente");
                            _parent.List(
                                            {
                                                Clie_ID: _parent.Clie_ID,
                                                CodigoConvocatoria: _parent.CodigoConvocatoria
                                            }
                                        );

                            _parent._getContForm().modal('hide');
                            _parent.VerificarEstadoFicha();
                        }
                    });


                } else {
                    _parent._getContForm().find("#aceptar").removeAttr("disabled");
                }
            }
        });

        //Eventos
        //Cuando se cambia el tipo de centro de estudio
        _parent._getForm().find("#Tins_Codigo").change(function () {
            var obj = $(this);
            var objTipo = _parent._getForm().find("#Tins_Codigo");
            var objChild = _parent._getForm().find("#Inst_Codigo");

            //Si esta para colocar otra institucion y cambiamos el tipo de institucion entonces ocultamos siempre
            //para ingresar las instituciones
            _parent._getForm().find("#otra_institucion").hide();
            if (obj.val() == "TINS0009") {
                _parent._getForm().find("#otro_tipo_institucion").show();
                _parent._getForm().find("#OEst_OtroNombreTipoInstitucion").val('');
                _parent._getForm().find("#OEst_OtroNombreTipoInstitucion").focus();
                _parent._getForm().find("#Layer_Institucion").hide();

            } else {
                _parent._getForm().find("#otro_tipo_institucion").hide();
                _parent._getForm().find("#Layer_Institucion").show();
                $.ajax({
                    url: URL_PAGE + "Postulante/FichaPostgrado/ObtenerInstitutoPorTipo",
                    type: "POST",
                    dataType: 'json',
                    data: { codigo: objTipo.val() },
                    success: function (data) {
                        objChild.find("option").remove();

                        var row = "<option value=\"\">SELECCIONE INSTITUCIÓN</option>";
                        $(row).appendTo(objChild);

                        row = "<option value=\"INST0019\" style=\"color:red\">OTROS</option>";
                        $(row).appendTo(objChild);

                        $.each(data, function (i, j) {
                            if (j.Inst_Nombre.toUpperCase() != "OTROS") {
                                var row = "<option value=\"" + j.Inst_Codigo + "\">" + j.Inst_Nombre + "</option>";
                                $(row).appendTo(objChild);
                            }
                        });
                    }
                });
            }
        });

        _parent._getForm().find("#Inst_Codigo").change(function () {
            var obj = $(this);
            if (obj.val() == "INST0019") {
                _parent._getForm().find("#otra_institucion").show();
                if (_parent._getForm().find("#Tins_Codigo").val() == "TINS0008") {
                    _parent._getForm().find("#Layer_Pais_Codigo_TipoInstFijo").show();
                } else {
                    _parent._getForm().find("#Layer_Pais_Codigo_TipoInstFijo").hide();
                }
            } else {
                _parent._getForm().find("#otra_institucion").hide();
            }
        });

        _parent._getForm().find("#GrAc_Codigo").change(function () {
            var obj = $(this);
            if (obj.val() == "GRAC9999") {
                _parent._getForm().find("#Layer_OtrosGradoAcademico").show();
                _parent._getForm().find("#OEst_OtroNombreGradoAcademico").focus();
            } else {
                _parent._getForm().find("#Layer_OtrosGradoAcademico").hide();
                _parent._getForm().find("#OEst_OtroNombreGradoAcademico").val('');
            }
        });

        _parent._getForm().find("#Prof_Codigo").change(function () {
            var obj = $(this);
            if (obj.val() == "PROF9999") {
                _parent._getForm().find("#Layer_OtrosEspecialidad").show();
                _parent._getForm().find("#OEst_OtroNombreEspecialidad").focus();
            } else {
                _parent._getForm().find("#Layer_OtrosEspecialidad").hide();
                _parent._getForm().find("#OEst_OtroNombreEspecialidad").val('');
            }
        });
    }

}